import axios from 'axios'

import {
  handleConfigureAuth,
  handleConfigureUserInfo,
  handleNetworkError,
  handleGeneralError
} from './tools'
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8'
axios.defaults.headers.put['Content-Type'] = 'application/json;charset=utf-8'
axios.defaults.headers.delete['Content-Type'] = 'application/json;charset=utf-8'

const instance = axios.create({
  baseURL: 'http://127.0.0.1:8080',
  timeout: 5000,
  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  }
})

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    console.log('请求拦截器')
    //    handleConfigureUserInfo()
    //    handleConfigureAuth()
    // 在发送请求之前做些什么
    return config
  },
  function (error) {
    // 对请求错误做些什么
    handleNetworkError(error.response.status)
    return Promise.reject(error)
  }
)

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    if (!response.data || response.data.code !== 200) {
      return handleGeneralError(response.data)
    }
    return response.data
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

export default instance
